nodejs 기초문법 :: 서버구축[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

서버구축
[1]
등록일:2018-07-14 17:02:19 (0%)
작성자:
제목:nodejs 기초문법

node.js 로 웹 서버를 구축하기 위해서는 javascript 문법을 먼저 이해해야만 합니다. 이번장에서는 javascript 의 가장 기본적인 형태인 변수의 선언과 흐름제어문인 조건문과 반복문에 대해 알아보도록 하겠습니다. 세 가지 문법 구조에 익숙해 지면 node.js 를 보다 쉽게 다룰 수 있게 됩니다.

+

이 강좌는 javascript 과정이 아니기 때문에 가장 기본적인 사용법만 알아보도록 하겠습니다.

+

가. 변수의 선언 및 사용

변수는 타입에 대한 구분없이 앞에 var 로 선언하고 사용합니다. 변수의 타입은 실행시에 스크립트 해석기인 엔진이 결정하지만 V8엔진의 경우 실행시가 아닌 JIT compiler가 기계어로 컴파일하기 직전에 컴파일러에 의해서 결정됩니다.

+

아래는 javascript를 사용하기 위한 몇 가지 규칙입니다

+

//1. 변수는 앞에 타입에 대한 구분없이 var 로 선언한다
//2. 문장의 끝은 항상 ; (세미콜론)으로 끝낸다
var name;

//3. = 을 사용해서 변수에 값을 입력하는데 문자열 입력시에는 앞뒤로 '(외따옴표) 또는 "(쌍따옴표)를 붙혀준다
name = '홍길동'; 

//4. 문자나 숫자 및 타입에 관계없이 변수는 var 로 선언한다
var num1;
num1 = 21;

//5. 변수의 선언과 동시에 값을 입력할 수 있다
var num2 = 3;

//6. 두 개의 변수를 더해서 다른 변수에 입력할 수 있다
var sum = num1 + num2;

//7. 숫자와 문자를 더할 경우 결과값은 문자가 된다. 아래 연산결과로 sum2 에는 "홍길동21"이 sum3에는 "이순신3"이 입력된다
var sum2 = name + num1;
var sum3 = '이순신' + 3;

* 주석은 // 또는 /* */ 둘 다 사용할 수 있습니다.

+

나. 함수의 선언 및 사용

함수는 function 함수이름(파라미터) { 실행코드 } 형태로 선언하며, 함수이름을 괄호와 함께 호출하면 실행됩니다. 실행코드에 return 예약어가 없으면 결과값 리턴이 없이 함수가 실행 후에 그대로 종료됩니다.

+

// 1. 세개의 파라미터를 더한 후 결과값을 리턴하는 함수를 선언
function sum(param1, param2, param3){
    return param1 + param2 + param3;
}

// 2. 함수 실행 후 결과값을 result 에 대입
var result = sum(1,2,3);

// 3. result 에 담긴 결과값을 출력
console.log('result='+result);

// 4. 결과값이 없는 함수의 선언
function print(param1){
    console.log('param1='+param1);
}

// 5. 함수호출 : return 이 없는 함수는 로직을 자체적으로 처리하기 때문에 결과값 대입 불필요
print('출력내용');

다. 조건문

javascript 에는 조건문으로 if 와 switch 가 있는데 이 강좌에서는 if 만 사용하도록 하겠습니다.

+

조건문의 구조는 타 언어와 유사합니다.

+

var a = 10;

if (a > 11) {
    console.log('a가 11보다 큽니다'); 
} else if(a == 11) {
    console.log('a가 11과 같습니다');
} else {
    console.log('a가 11보다 작습니다');
}

* console은 node.js 에서 콘솔화면에 로그를 사용하기 위한 내장객체이고, 멤버변수인 log('내용')로 로그를 출력할 수 있습니다.

+

라. 반복문

반복문에는 for 와 while, do ~ while 이 있습니다. 이 강좌에서는 while 문만 사용하겠습니다.

+

// 0부터 9까지 출력하는 while문
var i=0;
while(i < 10) {
    console.log("for : i의 값은="+i);
    i=i+1;
}

마. 클래스

javascript 는 프로토타입기반의 함수형 언어이기 때문에 특별하게 객체지향을 위한 class는 없습니다. 하지만 함수형 언어들의 특징은 함수자체를 하나의 객체로 취급하기 때문에 단일함수 또는 파일 자체를 하나의 class처럼 사용할 수 있습니다.

+

그럼 먼저 javascript 에서 함수를 사용해 객체화하는 방법을 알아보겠습니다. test_class.js 파일을 하나 만들고 아래 코드를 입력합니다.

+

  • test_class.js
//class의 선언 - 낙타표기법으로 첫번째 글자를 대문자로 함수를 하나 선언한다.
function Clazz(msg){
    // 변수를 객체의 멤버로 사용하기 위해 this 예약어를 사용해서 정의한다.
    this.name = 'I am Class';
    this.message = msg;

    // this를 사용하지 않은 변수
    message2 = "find me!";
    // 멤버함수 선언
    this.print = function(){
        console.log(message2);
    };
}

// 객체를 생성
var myClazz = new Clazz('good to see u!');
console.log(myClazz.message);
// this를 사용하지 않은 message2 변수는 외부에서 참조할 수 없다.
console.log(myClazz.message2);
// this로 선언된 함수를 통해 사용할 수 있다.
myClazz.print();

node test_class 명령어로 위의 코드를 실행하면 함수 내부에 this 로 정의되지 않은 변수는 undefined 로 찾을 수 없다고 나타납니다.

+

이렇게 함수를 new 연산자를 이용해 초기화함으로써 마치 객체처럼 사용할 수 있게 됩니다.

+

이제 위의 코드에 prototype 예약어를 이용해서 Clazz 외부에서 함수를 추가해 보겠습니다.

+

classPrototype.js 파일을 하나 만들고 아래 코드를 입력합니다. this 로 선언되지 않은 변수는 prototy[e으로 추가한 함수에서는 참조할 수 없는것을 확인할 수 있습니다.

+

  • test_prototype.js
function Clazz(msg){
    this.name = 'I am Class';
    this.message = msg;

    message2 = "find me!";
}
//Clazz 객체의 prototype 을 가져와서 message값을 리턴하는 함수를 하나 추가한다.
Clazz.prototype.getMessage = function(){
    return this.message;
}

Clazz.prototype.getMessage2 = function(){
    return this.message2;
}

// 객체를 생성
var myClazz = new Clazz('good to see u!');
console.log(myClazz.getMessage());
// 내부에 선언된 함수와는 다르게 prototype으로 선언한 함수는 값을 사용할 수 없다.
console.log(myClazz.getMessage2());

이제 node.js 에서 객체를 사용하는 방법을 알아보겠습니다. node.js에서는 require 를 사용해서 파일 전체를 객체로 불러올 수 있습니다. 파일 내부의 멤버들은 exports로 정의할 수도 있고, javascript에서처럼 this나 prototype으로 선언하고 module.exports 명령어로 한번에 처리할 수도 있습니다. 먼저 NodeClass.js 파일을 하나 만들고 아래와 같이 입력합니다.

+

  • NodeClass.js
function Clazz(){
    this.name = 'Hello there!';
    this.message;
}

// message 변수에 값을 입력하는 함수
Clazz.prototype.setMessage = function(msg){
    this.message = msg;
}
// message 변수의 값을 가져오는 함수
Clazz.prototype.getMessage = function(){
    return this.message;
}

// exports 명령어를 사용함으로써 다른파일에서 require 예약어를 이용해 Clazz 객체를 사용할 수 있게된다.
// exports 명령어의 위치는 파일의 어떤곳에 위치해도 동일하게 동작한다.
module.exports = Clazz;

이제 NodeClass 파일을 호출해서 사용할 use_class.js 파일을 생성하고 아래와 같이 입력합니다.

+

  • use_class.js
// NodeClass 를 선언한다. 여기서 NodeClass 는 변수명이 아니라 class명 이므로 첫글자를 대문자로 한다.
var NodeClass = require('./NodeClass');

// new 연산자를 사용해서 NodeClass 클래스를 nodeClass 변수로 초기화한다.
var nodeClass = new NodeClass();

// setMessage 함수로 값을 입력한다.
nodeClass.setMessage('Good to See u!');

// 입력된 값을 출력한다.
console.log(nodeClass.getMessage());

node use_class 명령어로 실행하면 아래와 같이 입력한 메시지가 출력되는 것을 확인할 수 있습니다.

+

바. 기초문법을 마치면서

기초문법으로 변수를 선언하고 값을 입력하는 방법과, if 문으로 특정 조건내에서 로직을 수행하는 방법 그리고 while 문으로 로직을 반복수행하는 방법을 알아보았습니다.

+

위의 세가지와 클래스 사용법만 정확하게 숙지 하신다면 node.js를 사용하는 데 있어서 문법적으로 크게 어려움은 없으리라 생각됩니다.

[본문링크] nodejs 기초문법
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=34688
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.